package com.yuliang.ai.domain.Dto;

import lombok.Data;

import java.util.List;

/**
 * @author Huangkai
 */
@Data
public class HotelDto {
    /**
     * 酒店民称
     */
    private String hotelName;
    /**
     * 城市编码
     */
    private String hotelCode;
    /**
     * 城市
     */
    private String city;
    /**
     * 星级
     */
    private String starName;
    /**
     * 品牌
     */
    private String brand;
    /**
     * 坐标
     */
    private String location;

    /**
     * 房间数据量
     */
    private Integer roomNums;
    /**
     * 评论数
     */
    private Integer comments;
    /**
     * 附加内容
     */
    private String attractions;

    /**
     * 房间信息
     */
    private RoomFacilities roomFacilities;

    /**
     * 装修时间
     */
    private String fitUpTime;

    /**
     * 地址
     */
    private String address;

    /**
     * 图片
     */
    private List<Pics> pics;

    /**
     * 封面图片
     */
    private String coverPic;

    /**
     * 视频地址
     */
    private String video;

    /**
     * 热度
     */
    private String heat;

    /**
     * 酒店编码
     */
    private String sourceCode;

    /**
     * 房间型号
     */
    private List<RoomPrices> roomPrices;

    /**
     * 公告列表
     */
    private List<Notice> notice;

    /**
     * 可筛选的规格
     */
    private List<Feature> features;

    /**
     * 开业时间
     * */
    private String openingDate;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 电话
     */
    private String tel;

    /**
     * 评分
     */
    private String evaluate;

    /**
     * 房间信息
     */
    private List<Room> rooms;

    /**
     * 附近的POI
     */
    private List<NearPoi> nearPois;

    /**
     * 亮点设施
     */
    private List<HighlightDetail> highlightDetails;

    /**
     * 发票开具方
     */
    private String invoiceProvider;
    /**
     * 酒店图文详情
     */
    private String description;
    /**
     * 酒店图文详情
     */
    private List<PreferentialPolicy> preferentialPolicies;
    /**
     * 优待政策补充内容
     */
    private String preferentialAddContent;
    /**
     * 入住政策
     */
    private List<EnterPolicy> enterPolicies;

    /**
     * 服务设施
     */
    private List<ServiceFacility> serviceFacilities;

    /**
     * 优惠券和促销活动
     */
    private List<ActivityOrCoupon> activityOrCoupons;

    @Data
    public static class ActivityOrCoupon{
        /**
         * 促销活动/优惠券ID
         */
        private String activityOrCouponId;
        /**
         * 促销活动/优惠券类型编码
         */
        private String activityOrCouponCode;
        /**
         * 领券活动ID
         */
        private String mktActivityId;
        /**
         * 领券规则ID
         */
        private String ruleId;
        /**
         * 券面值
         */
        private String couFaceValue;
        /**
         * 用券最大限制
         */
        private String couThresholdMaxValue;
        /**
         * 用券最低限制金额
         */
        private String couThresholdMinValues;
        /**
         * 营销形式
         */
        private String discountType;
        /**
         * 活动类型
         */
        private String activityType;
        /**
         * 活动主题
         */
        private String activityTopic;
        /**
         * 活动名称/券名称
         */
        private String activityOrCouponName;
        /**
         * 活动短标签
         */
        private String activityShortTag;
        /**
         * 活动长标签
         */
        private String activityLongTag;
        /**
         * 是否可以与优惠券叠加
         */
        private String isOverlyingCoupon;
        /**
         * 业务类型 * CH 酒店 * CT 景区/景点 * TR 线路 * CP 组合商品
         */
        private String businessType;
        /**
         * 活动开始时间
         */
        private String beginTime;
        /**
         * 活动结束时间
         */
        private String endTime;
        /**
         * 参与的星期day
         */
        private String weekDays;
        /**
         * 不参与的星期day
         */
        private String forbidWeekDays;
        /**
         * 禁止参与的天
         */
        private String forbidDays;
        /**
         * 活动的开展时间类型
         */
        private String activityTimeType;
        /**
         * (优惠券和促销活动的SKU)
         */
        private List<CanUseSku> canUseSkus;
        /**
         *
         */
        private List<NotCanUseSku> notCanUseSkus;
        /**
         * 是否限制用户
         */
        private Boolean  isLimitUser;
        /**
         * 是否全部酒店/景点/线路/组合产品
         */
        private Boolean isAllCanUse;
        /**
         * 使用说明
         */
        private String description;
        /**
         * 优惠券开始时间
         */
        private String validBeginTime;
        /**
         * 优惠券结束时间
         */
        private String validEndTime;

        @Data
        public static class NotCanUseSku{
            /**
             * 酒店/景区编码
             */
            private String sourceCode;
            /**
             * 房型/票种编码
             */
            private String sourceModelCode;
            /**
             * 产品ID
             */
            private String spuId;
            /**
             * 产品编码
             */
            private String spuCode;
            /**
             * skuId
             */
            private String skuId;
        }

        @Data
        public static class CanUseSku{
            /**
             * 酒店/景区编码
             */
            private String sourceCode;
            /**
             * 房型/票种编码
             */
            private String sourceModelCode;
            /**
             * 产品ID
             */
            private String spuId;
            /**
             * 产品编码
             */
            private String spuCode;
            /**
             * skuId
             */
            private String skuId;
        }
    }

    @Data
    public static class ServiceFacility{
        /**
         * 服务设施key
         */
        private String key;
        /**
         * 服务设施名称
         */
        private String name;
        /**
         * 服务设施简介
         */
        private String value;
        /**
         * 选中的图标
         */
        private String selectedIconUrl;
        /**
         * 未选中的图标
         */
        private String unSelectIconUrl;
    }

    @Data
    public static class EnterPolicy{
        /**
         * 政策key
         */
        private String key;
        /**
         * 政策名称
         */
        private String name;
        /**
         * 政策内容
         */
        private String value;
    }

    @Data
    public class PreferentialPolicy{
        /**
         * 适用人群key
         */
        private String personKey;
        /**
         * 适用人群名称
         */
        private String personName;
        /**
         * 优待政策key
         */
        private String preferentialKey;
        /**
         * 优待政策内容
         */
        private String preferentialName;
        /**
         * 适用条件
         */
        private String preferentialCondition;

    }

    @Data
    public static class HighlightDetail{
        /**
         * 排序
         */
        private Integer sort;
        /**
         * 亮点设施名称
         */
        private String name;
        /**
         * 亮点设施值
         */
        private String value;
    }


    @Data
    public static class NearPoi{
        /**
         * Poi名称
         */
        private String poiName;
        /**
         * 距离
         */
        private String distance;
        /**
         * poi类型
         */
        private String poiType;
    }

    @Data
    public static class Room{

        /**
         * 床型
         */
        private String bedTypeTxt;
        /**
         * 描述
         */
        private String description;
        /**
         * 轮播图
         */
        private String carouselPicUrl;
        /**
         * 面积
         */
        private String roomArea;
        /**
         * 楼层
         */
        private String roomFloor;
        /**
         * 入驻人数
         */
        private String personNumTxt;
        /**
         * 房型id
         */
        private String roomId;
        /**
         * 房型编码
         */
        private String roomCode;
        /**
         * 是否有窗
         */
        private String windowExist;
        /**
         * 是否可以吸烟
         */
        private String canSmoke;
        /**
         * 是否可以添加床
         */
        private String existAddBed;
        /**
         * 细节
         */
        private String detail;
        /**
         * 细节
         */
        private Integer bedNum;

        /**
         * sku
         */
        private List<Sku> skus;

        /**
         * 当前房型的设施列表
         * */
        private List<RoomFacility> roomFacilities;

        @Data
        public static class RoomFacility{
            /**
             * 房型设施id
             */
            private String roomFacilityId;
            /**
             * 房型设施名称
             */
            private String facilityName;
            /**
             * 房型设施类型
             */
            private String facilityType;
            /**
             * 房型设施ICON
             */
            private String facilityIcon;
        }



        @Data
        public static class Sku{
            /**
             * skuId
             */
            private Integer skuId;
            /**
             * spuId
             */
            private String spuId;
            /**
             * sku名称
             */
            private String skuName;
            /**
             * sku属性
             */
            private String skuProps;
            /**
             * 销售价
             */
            private String salePrice;
            /**
             * 挂牌价
             */
            private String showPrice;
            /**
             * 房型编号
             */
            private String roomId;
            /**
             * 最小购买数量
             */
            private Integer saleMinNum;
            /**
             * 最大购买数量
             */
            private Integer saleMaxNum;
            /**
             * 退改政策类型
             */
            private Integer cancelPolicyType;
            /**
             * 退改政策
             */
            private Integer cancelPolicyTypeText;
            /**
             * 退改时间
             */
            private String cancelPolicyTime;
            /**
             * 订单确认时间
             */
            private String orderConfirmTime;
            /**
             * 最近可售预期文本
             */
            private String lastCanSaleDateStr;
            /**
             * 销售标签
             */
            private String saleTags;
            /**
             * 餐时规格值
             */
            private String mealFeatureValue;

            /**
             * 规格
             */
            private List<Feature>features;

            /**
             * 购票须知
             */
            private PurchaseNote purchaseNotes;

            /**
             * (供应商SUP)
             */
            private Sup sup;

            /**
             * 门票规格
             */
            private String ticketFeatureValue;

            @Data
            public static class Sup{

                /**
                 * 供应商编码
                 */
                private String supCode;
                /**
                 * 供应商民称
                 */
                private String supName;

                /**
                 * 营业执照信息
                 */
                private List<License> licenses;

                @Data
                public static class License{
                    /**
                     * 证件照名称
                     */
                    private String licenseName;
                    /**
                     * 证件编号
                     */
                    private String licenseNo;
                    /**
                     * 签发单位
                     */
                    private String authorityUnit;
                    /**
                     * 有效期开始时间
                     */
                    private String begDate;
                    /**
                     * 有效期结束时间
                     */
                    private String endDate;
                    /**
                     * 证件照图
                     */
                    private String licensePic;
                    /**
                     * 排序
                     */
                    private Integer sort;
                }

            }

            @Data
            public static class PurchaseNote{
                /**
                 * 排序
                 */
                private Integer sort;
                /**
                 * 须知title
                 */
                private String noteTitle;
                /**
                 * 须知内容
                 */
                private Integer noteContent;
            }

            @Data
            public static class Feature{
                /**
                 * 规格id
                 */
                private String featureId;
                /**
                 * 规格名称
                 */
                private String featureName;
                /**
                 * 规格值id
                 */
                private String featureValueId;
                /**
                 * 规格
                 */
                private String featureValue;
            }
        }

    }

    @Data
    public static class Feature{
        /**
         * 规格id
         */
        private String featureId;
        /**
         * 规格名称
         */
        private String featureName;
        /**
         * 规格可选值
         */
        private List<FeatureValue> featureValues;

        @Data
        public static class FeatureValue {
            /**
             * 规格值id
             */
            private String featureValueId;
            /**
             * 规格值
             */
            private String featureValue;
        }
    }


    @Data
    public static class Notice{
        /**
         * 公告title
         */
        private String title;
        /**
         * id
         */
        private String id;

    }

    @Data
    public static class RoomPrices{
        /**
         * 房型编号
         */
        private String sourceModelCode;
        /**
         * 销售均价
         */
        private String avgSalePrice;
        /**
         * 挂牌价格
         */
        private String avgShowPrice;
        /**
         * 平均sku价格
         */
        private List<AvgSkuPrice> avgSkuPrices;

        @Data
        public static class AvgSkuPrice{

            /**
             * 酒店编码
             */
            private String sourceCode;

            /**
             * 房型编号
             */
            private String sourceModelCode;
            /**
             * skuId
             */
            private String skuId;
            /**
             * sku挂牌均价
             */
            private String showPrice;

            /**
             * sku销售均价
             */
            private Integer salePrice;
            /**
             * 供应商
             */
            private String etpCode;
            /**
             * spuId
             */
            private String spuId;
            /**
             * 库存
             */
            private Integer stock;

        }
    }

    @Data
    public static class Pics{
        /**
         * 图片类型
         */
        private String picType;
        /**
         * 图片地址
         */
        private String picUrl;
    }

    @Data
    public static class RoomFacilities{
        /**
         * 房间设施id
         */
        private String roomFacilityId;
        /**
         * 房间设施名称
         */
        private String facilityName;
        /**
         * 设施类型
         */
        private String facilityType;
        /**
         * 设施图标
         */
        private String facilityIcon;
    }
}
